When writing data to a flash data storage system, a host typically assigns unique logical addresses to sectors, clusters or other units of data within a continuous virtual address space of the storage system. The host writes data to, and reads data from, addresses within the logical address space of the storage system. The storage system then commonly maps data between the logical address space and the physical blocks or metablocks of the memory, where data is stored in fixed logical groups corresponding to ranges in the logical address space. Generally, each fixed logical group is stored in a separate physical block of the storage system.
Data updates sent by a host to such a storage system create partially obsolete blocks where valid data occupies part of a block and obsolete data occupies the rest of the block. Free space can generally only be reclaimed in flash memory by performing data copy operations, such logical group consolidation (also referred to as garbage collection) or temporary block compaction, on the partially obsolete blocks. Such operations can take a toll on memory endurance and performance. These types of maintenance operations may be triggered by receipt of a write command from a host. Other types of maintenance operations, such as wear leveling and read scrub operations, may also be executed that are not be triggered by a host write command. Any of these operations, when executed during command execution time, are generally referred to as foreground operations and may negatively impact the storage system's performance.
In multi-bank data storage systems, where logical space is distributed between independent banks, each bank may trigger a maintenance operation independently from the other. A maintenance operation that takes place as a foreground operation in one bank may delay execution of a host command in another bank. This delay of execution of a pending host command can be exacerbated if the banks independently initiate foreground maintenance operations in sequence. For example, in a two bank storage system, a pending host command could be delayed for double the maintenance time of one bank if the banks execute their respective maintenance operations serially. The problem of delays due to the maintenance operations in different banks may increase in storage systems where write operations switch frequently between banks to minimize the need for a large buffer RAM.